# 使用 Ubuntu 20.04 作为基础镜像
FROM ubuntu:20.04

# 设置环境变量以避免交互式配置提示
ENV DEBIAN_FRONTEND=noninteractive

# 更新并安装依赖
RUN apt-get update && \
    apt-get install -y \
        wget \
        curl \
        gnupg \
        apt-transport-https \
        software-properties-common \
        build-essential \
        python3 \
        python3-pip \
        fontconfig \
        fonts-liberation \
        libappindicator3-1 \
        libasound2 \
        libatk-bridge2.0-0 \
        libatk1.0-0 \
        libcups2 \
        libdbus-1-3 \
        libnspr4 \
        libnss3 \
        libxcomposite1 \
        libxdamage1 \
        libxrandr2 \
        libxshmfence1 \
        xdg-utils \
        --no-install-recommends && \
    ln -sf /usr/bin/python3 /usr/bin/python && \
    apt-get clean && \
    rm -rf /var/lib/apt/lists/*

    # 安装中文字体
RUN apt-get update && \
    apt-get install -y fonts-wqy-zenhei fonts-noto-cjk && \
    apt-get clean && \
    rm -rf /var/lib/apt/lists/*

# 添加 Google Chrome 的 PPA 并安装 Google Chrome
RUN wget -q -O - https://dl.google.com/linux/linux_signing_key.pub | apt-key add - && \
    sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" > /etc/apt/sources.list.d/google-chrome.list' && \
    apt-get update && \
    apt-get install -y google-chrome-stable --no-install-recommends && \
    apt-get clean && \
    rm -rf /var/lib/apt/lists/*

# 下载并安装 Node.js 18 及 npm 使用阿里云镜像
RUN curl -o node-v18.18.0-linux-x64.tar.xz https://mirrors.aliyun.com/nodejs-release/v18.18.0/node-v18.18.0-linux-x64.tar.xz && \
    tar -xJf node-v18.18.0-linux-x64.tar.xz -C /usr/local --strip-components=1 && \
    rm node-v18.18.0-linux-x64.tar.xz && \
    ln -s /usr/local/bin/node /usr/bin/node && \
    ln -s /usr/local/bin/npm /usr/bin/npm && \
    ln -s /usr/local/bin/npx /usr/bin/npx

# 设置 Puppeteer 环境变量以使用系统中的 Google Chrome
ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true \
    PUPPETEER_EXECUTABLE_PATH=/usr/bin/google-chrome-stable

# 创建并设置工作目录
WORKDIR /usr/src/app

# 配置 NPM 使用阿里云的镜像源并打印配置信息
COPY package*.json ./
RUN npm config set registry https://registry.npmmirror.com/ && \
    echo "NPM registry set to:" && \
    npm config get registry && \
    npm config set loglevel verbose && \
    npm install canvas --canvas_binary_host_mirror=https://registry.npmmirror.com/-/binary/canvas && \
    npm install

# 复制项目的其余文件
COPY . .

# 设置暴露端口（假设应用运行在3000端口）
EXPOSE 3000

# 启动应用
CMD ["npm", "run", "dev"]